
******************* Choice Architecture to Improve Financial Decision Making *******************

*** Updated Last: September 2019

version 14.2
set more off


*********************
*** PRELIMINARIES ***
*********************



use "CAtIFDM.dta"


*** NOTE: ExpID==888888 are people who didn't come to round 1 but showed up for round 2. There are two of them.

** Create outcome variables and treatments.
gen bestcardchosen=0
replace  bestcardchosen=1 if CardChoice==1 & LeftCard=="A"
replace  bestcardchosen=1 if CardChoice==2 & MiddleCard=="A"
replace  bestcardchosen=1 if CardChoice==3 & RightCard=="A"

gen worstcardchosen=0
replace  worstcardchosen=1 if CardChoice==1 & LeftCard=="C"
replace  worstcardchosen=1 if CardChoice==2 & MiddleCard=="C"
replace  worstcardchosen=1 if CardChoice==3 & RightCard=="C"

gen middlecardchosen=0
replace  middlecardchosen=1 if CardChoice==1 & LeftCard=="B"
replace  middlecardchosen=1 if CardChoice==2 & MiddleCard=="B"
replace  middlecardchosen=1 if CardChoice==3 & RightCard=="B"

gen many=0
replace many=1 if Treatment==1
label define manylabel 0 "Other" 1 "Tabular"
label values many manylabel

gen few=0
replace few=1 if Treatment==2
label define fewlabel 0 "Other" 1 "Consolidated"
label values few fewlabel

gen text=0
replace text=1 if Treatment==3
label define textlabel 0 "Other" 1 "Text"
label values text textlabel

g choice=1
replace choice=0 if bestcardchosen==1
replace choice=2 if worstcardchosen==1
label define choicelabel 0 "Best" 1 "Middle" 2 "Worst"
label values choice choicelabels

label define treatmentlabels 1 "Tabular" 2 "Consolidated" 3 "Text"
label values Treatment treatmentlabels

g graphtreatment=Treatment==3
replace graphtreatment=2 if Treatment==1
replace graphtreatment=3 if Treatment==2
label define treatmentlabel 1 "Text" 2 "Tabular" 3 "Consolidated"
label values graphtreatment treatmentlabel
tab Treatment graphtreatment

** Family Income
tab FamilyIncome
g highincome=FamilyIncome>3
replace highincome=. if FamilyIncome==.

** Cognitive Reflection
g crt1=CRT1*100
g crt1correct=crt1==5
g crt2correct=CRT2==5
g crt3correct=CRT3==47
g crtscore=crt1correct+crt2correct+crt3correct
sum crt1correct crt2correct crt3correct crtscore
tab crtscore
g highcrt=crtscore>1
replace highcrt=. if ExpID==888888
replace crtscore=. if ExpID==888888

** Financial Literacy
g fl1correct=FL1==3 if ExpID!=888888
g fl2correct=FL2==2 if ExpID!=888888
g fl3correct=FL3==3 if ExpID!=888888
g fl4correct=FL4==3 if ExpID!=888888
g fl5correct=FL5==2 if ExpID!=888888
g fl6correct=FL6==1 if ExpID!=888888
g fl7correct=FL7==1 if ExpID!=888888
g fl8correct=FL8==1 if ExpID!=888888
g fl9correct=FL9==2 if ExpID!=888888
g fl10correct=FL10==4 if ExpID!=888888
g flscore= fl1correct+fl2correct+fl3correct+fl4correct+fl5correct+fl6correct+fl7correct+fl8correct+fl9correct+fl10correct
g highfl=flscore>7
replace highfl=. if ExpID==888888
sum fl1correct fl1correct fl2correct fl3correct fl4correct fl5correct fl6correct fl7correct fl8correct fl9correct fl10correct flscore highfl

** Time spent considering one's card choice.
g seconds_spent=EndCardChoice-StartCardChoice

* The opportunity cost of time (OCT) spent deciding is seconds_spent*0.01,
* where a rate of 1 cent per second translates into $36/hour - the stakes of the experiment.
* We account for the OCT of time once it is past the median time spent deciding of approximately 90 seconds.
g time_past_median = seconds_spent-90
replace time_past_median = 0 if (seconds_spent-90)<0
g OCT = time_past_median*0.01



*************************************************
*** EXPECTED UTILITY and WELFARE CALCULATIONS ***
*************************************************

** Basic Expected Utility levels and differences.
gen EU_L = (1/alphai)*(InitialAmountL-ActivationL-ServiceL-AdminL-MonthlyL-0)^(alphai) + ((LossProbL/100)* deltai^(28)*(1/alphai)*(ReloadAmountL-ReloadL-ServiceL-AdminL-MonthlyL-InsuranceCostL-10-0)^(alphai) + (1-((LossProbL)/100))* deltai^(28)*(1/alphai)*(ReloadAmountL-ReloadL-ServiceL-AdminL-MonthlyL-InsuranceCostL-0)^(alphai))
gen EU_M = (1/alphai)*(InitialAmountM-ActivationM-ServiceM-AdminM-MonthlyM-0)^(alphai) + ((LossProbM/100)* deltai^(28)*(1/alphai)*(ReloadAmountM-ReloadM-ServiceM-AdminM-MonthlyM-InsuranceCostM-10-0)^(alphai) + (1-((LossProbM)/100))* deltai^(28)*(1/alphai)*(ReloadAmountM-ReloadM-ServiceM-AdminM-MonthlyM-InsuranceCostM-0)^(alphai))
gen EU_R = (1/alphai)*(InitialAmountR-ActivationR-ServiceR-AdminR-MonthlyR-0)^(alphai) + ((LossProbR/100)* deltai^(28)*(1/alphai)*(ReloadAmountR-ReloadR-ServiceR-AdminR-MonthlyR-InsuranceCostR-10-0)^(alphai) + (1-((LossProbR)/100))* deltai^(28)*(1/alphai)*(ReloadAmountR-ReloadR-ServiceR-AdminR-MonthlyR-InsuranceCostR-0)^(alphai))
 
* Fix EU of cards for the individuals (given their preferences). 
g EUchosen=.
replace EUchosen=EU_L if CardChoice==1 
replace EUchosen=EU_M if CardChoice==2
replace EUchosen=EU_R if CardChoice==3

g EUdominated=.
replace EUdominated=EU_L if LeftCard=="C"
replace EUdominated=EU_M if MiddleCard=="C"
replace EUdominated=EU_R if RightCard=="C"

g EUbest=.
replace EUbest=EU_L if LeftCard=="A"
replace EUbest=EU_M if MiddleCard=="A"
replace EUbest=EU_R if RightCard=="A"

g EUanchor=.
replace EUanchor=EU_L if LeftCard=="B"
replace EUanchor=EU_M if MiddleCard=="B"
replace EUanchor=EU_R if RightCard=="B"


** Expected Utility using the DMPL.
* We can recalculate the expected utilities using alpha_avg for alphai and delta_avg for deltai. 
* This is the a(djusted) DMPL Expected Utility of each card.
* Note: Exp IDs 566569 & 669842 do not have alpha_avg or adjusted_delta_avg because they failed the attention test on the last line of the Holt_Laury elicitation. 
* We give them values consitent with people who made the same choices but got the last one "right".
* This means they get alpha_avg = (-0.37+-0.21)/ = -0.29 and adjusted_delta_avg = 1 for ExpID=566569 and 0.9992594 for ExpID=669842.
replace alpha_avg=-0.29 if ExpID==566569 | ExpID==669842
replace adjusted_delta_avg=1 if ExpID==566569
replace adjusted_delta_avg=0.9992594 if ExpID==669842

gen aDMPL_EU_L = (1/alpha_avg)*(InitialAmountL-ActivationL-ServiceL-AdminL-MonthlyL-0)^(alpha_avg) + ((LossProbL/100)* adjusted_delta_avg^(28)*(1/alpha_avg)*(ReloadAmountL-ReloadL-ServiceL-AdminL-MonthlyL-InsuranceCostL-10-0)^(alpha_avg) + (1-((LossProbL)/100))* adjusted_delta_avg^(28)*(1/alpha_avg)*(ReloadAmountL-ReloadL-ServiceL-AdminL-MonthlyL-InsuranceCostL-0)^(alpha_avg))
gen aDMPL_EU_M = (1/alpha_avg)*(InitialAmountM-ActivationM-ServiceM-AdminM-MonthlyM-0)^(alpha_avg) + ((LossProbM/100)* adjusted_delta_avg^(28)*(1/alpha_avg)*(ReloadAmountM-ReloadM-ServiceM-AdminM-MonthlyM-InsuranceCostM-10-0)^(alpha_avg) + (1-((LossProbM)/100))* adjusted_delta_avg^(28)*(1/alpha_avg)*(ReloadAmountM-ReloadM-ServiceM-AdminM-MonthlyM-InsuranceCostM-0)^(alpha_avg))
gen aDMPL_EU_R = (1/alpha_avg)*(InitialAmountR-ActivationR-ServiceR-AdminR-MonthlyR-0)^(alpha_avg) + ((LossProbR/100)* adjusted_delta_avg^(28)*(1/alpha_avg)*(ReloadAmountR-ReloadR-ServiceR-AdminR-MonthlyR-InsuranceCostR-10-0)^(alpha_avg) + (1-((LossProbR)/100))* adjusted_delta_avg^(28)*(1/alpha_avg)*(ReloadAmountR-ReloadR-ServiceR-AdminR-MonthlyR-InsuranceCostR-0)^(alpha_avg))

g aDMPL_EUdominated=.
replace aDMPL_EUdominated=aDMPL_EU_L if LeftCard=="C"
replace aDMPL_EUdominated=aDMPL_EU_M if MiddleCard=="C"
replace aDMPL_EUdominated=aDMPL_EU_R if RightCard=="C"

g aDMPL_EUAnchor = .
replace aDMPL_EUAnchor=aDMPL_EU_L if LeftCard=="B"
replace aDMPL_EUAnchor=aDMPL_EU_M if MiddleCard=="B"
replace aDMPL_EUAnchor=aDMPL_EU_R if RightCard=="B"

g aDMPL_EUBest = .
replace aDMPL_EUBest=aDMPL_EU_L if LeftCard=="A"
replace aDMPL_EUBest=aDMPL_EU_M if MiddleCard=="A"
replace aDMPL_EUBest=aDMPL_EU_R if RightCard=="A"

g aDMPL_EUchosen=.
replace aDMPL_EUchosen=aDMPL_EU_L if CardChoice==1 
replace aDMPL_EUchosen=aDMPL_EU_M if CardChoice==2
replace aDMPL_EUchosen=aDMPL_EU_R if CardChoice==3

g aDMPL_EUdiffChosenDom=aDMPL_EUchosen-aDMPL_EUdominated
g aDMPL_EUbestminusdom=aDMPL_EUBest-aDMPL_EUdominated
g aDMPL_EUFracAchieved = aDMPL_EUdiffChosenDom/aDMPL_EUbestminusdom



** Calculating welfare in terms of dollars instead of utils.
* We translate the utility difference between the cards into dollars using individual preferences.
* We also assume we are looking at the present vaulue of the cards (ie looking from the perspective of today).
* For example, if EU(best)-EU(dominated)=u(money) then u^-1(EUbest-EUdominated)=money.
g Dollar_gain=(alphai*(EUchosen-EUdominated))^(1/alphai)
g Dollar_max=(alphai*(EUbest-EUdominated))^(1/alphai)
g DollarFracAchieved = (Dollar_gain/Dollar_max)
g Dollar_stakes=(alphai*(aDMPL_EUBest-aDMPL_EUdominated))^(1/alphai)
replace Dollar_stakes=(alphai*(aDMPL_EUBest))^(1/alphai)-(alphai*(aDMPL_EUdominated))^(1/alphai) if (aDMPL_EUBest-aDMPL_EUdominated)<0

* Setting a high stakes indicator for the heterogeneous treatment effects.
tab Dollar_stakes if complete==1
g highstakes=Dollar_stakes>1.024428
*Nb: complete=1 references those stage 2 participants for whom we were able to succesfully compute credible best,middle,worst card rankings. 
*Nb: The complete!=1 people include a) 11 individuals who showed up for stage 2 but whose cards were not individualized due to the reasons referenced in footnote 18, making their utility rankings uninformative, b) 3 individuals who provided invalid IDs in stage 2 to correctly link them to stage 1-derived cards (the two ExpID==8888888 participants who gave non-valid IDs and a third individual, the complete!=1 occurence of ExpID==524058, who falsely gave someone else's id), and, c) one line (the complete!=1 occurrence of ExpID==549262) incorrectly generated by ex-post stage 2 data processing whereby this individual's stage 2 choices were linked to alpha/delta values to someone who falsely claimed their id in stage 1 (the correct linking for this ExpID is also included in the data, the complete==1 occurrence, reflecting the actual card choices the individual faced in stage 2, generated from the correct alphas and deltas in stage 1 and listed with that entry)


* We can account for the opportunity cost of time by just subtracting because everything is in terms of dollars now.
g DollarFracAchievedT = ((Dollar_gain-OCT)/Dollar_max)



** What happens to the welfare results if we use simple additive utility instead?
* In this case we just sum the (expected) monetary amounts and the outcomes are already in dollars.
gen SumDol_L = (InitialAmountL-ActivationL-ServiceL-AdminL-MonthlyL) + ((LossProbL/100)*(ReloadAmountL-ReloadL-ServiceL-AdminL-MonthlyL-InsuranceCostL-10)) + (1-((LossProbL)/100))*(ReloadAmountL-ReloadL-ServiceL-AdminL-MonthlyL-InsuranceCostL)
gen SumDol_M = (InitialAmountM-ActivationM-ServiceM-AdminM-MonthlyM) + ((LossProbM/100)*(ReloadAmountM-ReloadM-ServiceM-AdminM-MonthlyM-InsuranceCostM-10)) + (1-((LossProbM)/100))*(ReloadAmountM-ReloadM-ServiceM-AdminM-MonthlyM-InsuranceCostM)
gen SumDol_R = (InitialAmountR-ActivationR-ServiceR-AdminR-MonthlyR) + ((LossProbR/100)*(ReloadAmountR-ReloadR-ServiceR-AdminR-MonthlyR-InsuranceCostR-10)) + (1-((LossProbR)/100))*(ReloadAmountR-ReloadR-ServiceR-AdminR-MonthlyR-InsuranceCostR)

g AddBest=.
replace AddBest=1 if SumDol_L>SumDol_M & SumDol_L>SumDol_R
replace AddBest=2 if SumDol_M>SumDol_L & SumDol_M>SumDol_R
replace AddBest=3 if SumDol_R>SumDol_M & SumDol_R>SumDol_L
tab AddBest

g AddWorst=.
replace AddWorst=1 if SumDol_L<SumDol_M & SumDol_L<SumDol_R
replace AddWorst=2 if SumDol_M<SumDol_L & SumDol_M<SumDol_R
replace AddWorst=3 if SumDol_R<SumDol_M & SumDol_R<SumDol_L
tab AddWorst

g AddMiddle=.
replace AddMiddle=1 if AddBest!=1 & AddWorst!=1
replace AddMiddle=2 if AddBest!=2 & AddWorst!=2
replace AddMiddle=3 if AddBest!=3 & AddWorst!=3
tab AddMiddle

* Three ties for best card with additive utility.
replace AddBest=1 if id==109
replace AddBest=1 if id==36
replace AddBest=2 if id==140

g AddChosen=.
replace AddChosen=SumDol_L if CardChoice==1 
replace AddChosen=SumDol_M if CardChoice==2
replace AddChosen=SumDol_R if CardChoice==3

g AddDominated=.
replace AddDominated=SumDol_L if AddWorst==1
replace AddDominated=SumDol_M if AddWorst==2
replace AddDominated=SumDol_R if AddWorst==3

g AddHighest=.
replace AddHighest=SumDol_L if AddBest==1
replace AddHighest=SumDol_M if AddBest==2
replace AddHighest=SumDol_R if AddBest==3

g AddAnchor=.
replace AddAnchor=SumDol_L if AddMiddle==1
replace AddAnchor=SumDol_M if AddMiddle==2
replace AddAnchor=SumDol_R if AddMiddle==3

g EUFracAchievedA = (AddChosen-AddDominated)/(AddHighest-AddDominated)
g EUFracAchievedAT = (AddChosen-AddDominated-OCT)/(AddHighest-AddDominated)



** Instead of the delta elicited, what if we use the interest rate information we elicited from each participant 
*  in the survey (and for those who don't respond, use the average rate reported).
g ccrate=.
replace ccrate=CardInterestRate if CardInterestRate>=0
replace ccrate=9.75 if CardInterestRate<0
g cccrate=((1+(ccrate/100))^(1/31))-1
g deltaS=(1/(1+cccrate))
tab deltaS
	
* Expected utility levels and differences.
gen EU_LS = (1/alphai)*(InitialAmountL-ActivationL-ServiceL-AdminL-MonthlyL-0)^(alphai) + ((LossProbL/100)* deltaS^(28)*(1/alphai)*(ReloadAmountL-ReloadL-ServiceL-AdminL-MonthlyL-InsuranceCostL-10-0)^(alphai) + (1-((LossProbL)/100))* deltaS^(28)*(1/alphai)*(ReloadAmountL-ReloadL-ServiceL-AdminL-MonthlyL-InsuranceCostL-0)^(alphai))
gen EU_MS = (1/alphai)*(InitialAmountM-ActivationM-ServiceM-AdminM-MonthlyM-0)^(alphai) + ((LossProbM/100)* deltaS^(28)*(1/alphai)*(ReloadAmountM-ReloadM-ServiceM-AdminM-MonthlyM-InsuranceCostM-10-0)^(alphai) + (1-((LossProbM)/100))* deltaS^(28)*(1/alphai)*(ReloadAmountM-ReloadM-ServiceM-AdminM-MonthlyM-InsuranceCostM-0)^(alphai))
gen EU_RS = (1/alphai)*(InitialAmountR-ActivationR-ServiceR-AdminR-MonthlyR-0)^(alphai) + ((LossProbR/100)* deltaS^(28)*(1/alphai)*(ReloadAmountR-ReloadR-ServiceR-AdminR-MonthlyR-InsuranceCostR-10-0)^(alphai) + (1-((LossProbR)/100))* deltaS^(28)*(1/alphai)*(ReloadAmountR-ReloadR-ServiceR-AdminR-MonthlyR-InsuranceCostR-0)^(alphai))
 
* Fix EU of cards for the individuals (given their preferences). 
g EUchosenS=.
replace EUchosenS=EU_LS if CardChoice==1 
replace EUchosenS=EU_MS if CardChoice==2
replace EUchosenS=EU_RS if CardChoice==3

g EUdominatedS=.
replace EUdominatedS=EU_LS if LeftCard=="C"
replace EUdominatedS=EU_MS if MiddleCard=="C"
replace EUdominatedS=EU_RS if RightCard=="C"

g EUbestS=.
replace EUbestS=EU_LS if LeftCard=="A"
replace EUbestS=EU_MS if MiddleCard=="A"
replace EUbestS=EU_RS if RightCard=="A"

g EUanchorS=.
replace EUanchorS=EU_LS if LeftCard=="B"
replace EUanchorS=EU_MS if MiddleCard=="B"
replace EUanchorS=EU_RS if RightCard=="B"

g Dollar_gainS=(alphai*(EUchosenS-EUdominatedS))^(1/alphai)
g Dollar_maxS=(alphai*(EUbestS-EUdominatedS))^(1/alphai)
replace Dollar_maxS=(alphai*(EUanchorS-EUdominatedS))^(1/alphai) if Dollar_maxS==.
g DollarFracAchievedS = (Dollar_gainS/Dollar_maxS)

* We can account for the opportunity cost of time by just subtracting because everything is in terms of dollars now.
g DollarFracAchievedST = ((Dollar_gainS-OCT)/Dollar_maxS)


** Add a few labels to the variables used most often.
label var many "Tabular"
label var few "Consolidated"
label var aDMPL_EUbestminusdom "Stakes (in EU)"
label var Dollar_stakes "Stakes (in $)"
label var seconds_spent "Time (in seconds)"
label var highincome "High Income (I)"
label var highcrt "High CRT (I)"
label var highfl "High Fin. Lit. (I)"



***********************************
*** TABLE 1 - Treatment Balance ***
***********************************

table Treatment, c(mean highincome mean highcrt mean highfl)
table Treatment, c(median alphai median deltai)
table Treatment, c(mean Dollar_stakes)
table Treatment if complete==1, c(mean Dollar_stakes)

prtest highincome if Treatment==1 | Treatment==3, by(Treatment)
prtest highincome if Treatment==1 | Treatment==2, by(Treatment)
prtest highincome if Treatment==2 | Treatment==3, by(Treatment)

prtest highcrt if Treatment==1 | Treatment==3, by(Treatment)
prtest highcrt if Treatment==1 | Treatment==2, by(Treatment)
prtest highcrt if Treatment==2 | Treatment==3, by(Treatment)

prtest highfl if Treatment==1 | Treatment==3, by(Treatment)
prtest highfl if Treatment==1 | Treatment==2, by(Treatment)
prtest highfl if Treatment==2 | Treatment==3, by(Treatment)

ttest alphai if Treatment==1 | Treatment==3, by(Treatment)
ttest alphai if Treatment==1 | Treatment==2, by(Treatment)
ttest alphai if Treatment==2 | Treatment==3, by(Treatment)

ttest deltai if Treatment==1 | Treatment==3, by(Treatment)
ttest deltai if Treatment==1 | Treatment==2, by(Treatment)
ttest deltai if Treatment==2 | Treatment==3, by(Treatment)

ttest Dollar_stakes if Treatment==1 | Treatment==3, by(Treatment)
ttest Dollar_stakes if Treatment==1 | Treatment==2, by(Treatment)
ttest Dollar_stakes if Treatment==2 | Treatment==3, by(Treatment)



************************************************
*** FIGURE 5 - Bar Chart of Time Spent Diffs ***
************************************************

cibar seconds_spent, over1(graphtreatment)

ttest seconds_spent if Treatment==1 | Treatment==3, by(Treatment)
ttest seconds_spent if Treatment==1 | Treatment==2, by(Treatment)
ttest seconds_spent if Treatment==2 | Treatment==3, by(Treatment)



****************************
*** TABLE 2 - Time Spent ***
****************************

sum seconds_spent

eststo T1: reg seconds_spent many few if complete==1, robust
lincom many-few
eststo T2: reg seconds_spent many few aDMPL_EUbestminusdom highincome highcrt highfl if complete==1, robust
lincom many-few
nbreg seconds_spent many few if complete==1, robust
eststo T3: margins, dydx(*) post
lincom many-few
nbreg seconds_spent many few aDMPL_EUbestminusdom highincome highcrt highfl if complete==1, robust
eststo T4: margins, dydx(*) post
lincom many-few
esttab T1 T2 T3 T4, r2 b(%10.3fc) se(%10.3fc) label compress nonotes addnotes("Note: dependent variable is the number of seconds spent; robust standard errors reported;" "negative binomial marginal effects reported; * p<0.10, ** p<0.05, *** p<0.01.") replace star(* 0.10 ** 0.05 *** 0.01) /*
	*/ drop() mtitles("OLS" "OLS" "NBinomial" "NBinomial") title(Time Spent Deciding) /*
	*/ order()



*****************************************************
*** FIGURE 6 - Card Choice Frequency by Treatment ***
*****************************************************

* A stacked graph.
graph bar worstcardchosen middlecardchosen bestcardchosen if complete==1, over(graphtreatment, relabel(1 "Text" 2 "Tabular" 3 "Consolidated")) stack percent bar(1, color(gs4))  bar(2, color(gs8))  bar(3, color(gs12)) ytitle(Relative Frequency of Choices) legend(order(1 "Worst" 2 "Middle" 3 "Best")) graphregion(color(white))

table Treatment if complete==1 , c(mean worstcardchosen mean middlecardchosen mean bestcardchosen)



***********************************
*** TABLE 3 - Worst Card Chosen ***
***********************************

eststo W1: reg worstcardchosen many few if complete==1, robust
lincom many-few
eststo W2: reg worstcardchosen many few aDMPL_EUbestminusdom highincome highcrt highfl if complete==1, robust
lincom many-few
probit worstcardchosen many few if complete==1, robust
eststo W3: margins, dydx(*) post
lincom many-few
probit worstcardchosen many few aDMPL_EUbestminusdom highincome highcrt highfl if complete==1, robust
eststo W4: margins, dydx(*) post
lincom many-few
esttab W1 W2 W3 W4, r2 b(%10.3fc) se(%10.3fc) label compress nonotes addnotes("Note: dependent variable is 1 if the dominated card is chosen; robust" "standard errors reported; probit marginal effects reported; * p<0.10," "** p<0.05, *** p<0.01.") replace star(* 0.10 ** 0.05 *** 0.01) /*
	*/ drop() mtitles("OLS" "OLS" "Probit" "Probit") title(Choosing the Worst Card) /*
	*/ order()



**********************************
*** TABLE 4 - Best Card Chosen ***
**********************************

eststo B1: reg bestcardchosen many few if complete==1, robust
lincom many-few
eststo B2: reg bestcardchosen many few aDMPL_EUbestminusdom highincome highcrt highfl if complete==1, robust
lincom many-few
probit bestcardchosen many few if complete==1, robust
eststo B3: margins, dydx(*) post
lincom many-few
probit bestcardchosen many few aDMPL_EUbestminusdom highincome highcrt highfl if complete==1, robust
eststo B4: margins, dydx(*) post
lincom many-few
esttab B1 B2 B3 B4, r2 b(%10.3fc) se(%10.3fc) label compress nonotes addnotes("Note: dependent variable is 1 if the best card is chosen; robust" "standard errors reported; probit marginal effects reported; * p<0.10," "** p<0.05, *** p<0.01.") replace star(* 0.10 ** 0.05 *** 0.01) /*
	*/ drop() mtitles("OLS" "OLS" "Probit" "Probit") title(Choosing the Best Card) /*
	*/ order()

	
	
******************************************************
*** FIGURE 7 - Welfare and Oportunity Cost of Time ***
******************************************************

* Not accounting for the opportunity cost of time.
cibar DollarFracAchieved if complete==1, over1(graphtreatment)	graphopts(title("Without Opportunity Cost of Time"))
* Accounting for the opportunity cost of time.	
cibar DollarFracAchievedT if complete==1, over1(graphtreatment)	graphopts(title("Accounting for Opportunity Cost of Time"))
	
	
	
*************************
*** TABLE 5 - Welfare ***
*************************

eststo D1: reg DollarFracAchieved many few if complete==1, robust
lincom many-few
eststo D2: reg DollarFracAchieved many few Dollar_stakes highincome highcrt highfl if complete==1, robust
lincom many-few
eststo D3: reg DollarFracAchievedT many few if complete==1, robust
lincom many-few
eststo D4: reg DollarFracAchievedT many few Dollar_stakes highincome highcrt highfl if complete==1, robust
lincom many-few
esttab D1 D2 D3 D4, r2 b(%10.3fc) se(%10.3fc) label compress nonotes addnotes("Dependent variable is the fraction of the dollar gains available" "that are achieved; robust standard errors reported." "* p<0.10, ** p<0.05, *** p<0.01.") replace star(* 0.10 ** 0.05 *** 0.01) /*
	*/ drop() mtitles("OLS" "OLS" "OLS" "OLS") title(Fraction of Maximum Dollar Gains Achieved) /*
	*/ order()

	
	
*********************************
*** APPENDIX TABLES & FIGURES ***
*********************************

*** FIGURE A4 - Comparing Alphas Between CTB and DMPL ***
twoway (scatter alphai alpha_avg if complete==1)


*** FIGURE A5 - Comparing Deltas Between CTB and DMPL ***
twoway (scatter deltai adjusted_delta_avg if complete==1)

		
*** TABLE A1 - Heterogeneous Effects by Stakes ***	
set more off
reg worstcardchosen many few highincome highcrt highfl if highstakes==1 & complete==1, robust
est sto S1
lincom many-few
reg worstcardchosen many few highincome highcrt highfl if highstakes==0 & complete==1, robust
est sto S2
lincom many-few
reg bestcardchosen many few highincome highcrt highfl if highstakes==1 & complete==1, robust
est sto S3
lincom many-few
reg bestcardchosen many few highincome highcrt highfl if highstakes==0 & complete==1, robust
est sto S4
lincom many-few
reg DollarFracAchievedT many few highincome highcrt highfl if highstakes==1 & complete==1, robust
est sto S5
lincom many-few
reg DollarFracAchievedT many few highincome highcrt highfl if highstakes==0 & complete==1, robust
est sto S6
lincom many-few
esttab S1 S2 S3 S4 S5 S6, r2 b(%10.3fc) se(%10.3fc) compress nonotes addnotes("Note: the dependent variable is an indicator for the best or the worst card chosen in the first" "four columns and the fraction of the maximum dollars achieved in the last two columns; a complete" "set of controls is added but not reported; robust standard errors reported. * p<0.10," "** p<0.05, *** p<0.01.") label replace star(* 0.10 ** 0.05 *** 0.01) /*
	*/ drop(highincome highcrt highfl) mtitles("High" "Low" "High" "Low" "High" "Low") title(A1: Heterogeneous Stake Effects) /*
	*/ order()

	
*** TABLE A2 - Heterogeneous Effects by Income ***
reg worstcardchosen many few Dollar_stakes highcrt highfl if highincome==1 & complete==1, robust
est sto I1
lincom many-few
reg worstcardchosen many few Dollar_stakes highcrt highfl if highincome==0 & complete==1, robust
est sto I2
lincom many-few
reg bestcardchosen many few Dollar_stakes highcrt highfl if highincome==1 & complete==1, robust
est sto I3
lincom many-few
reg bestcardchosen many few Dollar_stakes highcrt highfl if highincome==0 & complete==1, robust
est sto I4
lincom many-few
reg DollarFracAchievedT many few Dollar_stakes highcrt highfl if highincome==1 & complete==1, robust
est sto I5
lincom many-few
reg DollarFracAchievedT many few Dollar_stakes highcrt highfl if highincome==0 & complete==1, robust
est sto I6
lincom many-few
esttab I1 I2 I3 I4 I5 I6, r2 b(%10.3fc) se(%10.3fc) compress nonotes addnotes("Note: the dependent variable is an indicator for the best or the worst card chosen in the first" "four columns and the fraction of the maximum dollars achieved in the last two columns; a complete" "set of controls is added but not reported; robust standard errors reported. * p<0.10," "** p<0.05, *** p<0.01.") label replace star(* 0.10 ** 0.05 *** 0.01) /*
	*/ drop(Dollar_stakes highcrt highfl) mtitles("High" "Low" "High" "Low" "High" "Low") title(A2: Heterogeneous Income Effects) /*
	*/ order()
		

*** TABLE A3 - Heterogeneous Effects by Cognitive Ability ***
reg worstcardchosen many few Dollar_stakes highincome highfl if highcrt==1 & complete==1, robust
est sto C1
lincom many-few
reg worstcardchosen many few Dollar_stakes highincome highfl if highcrt==0 & complete==1, robust
est sto C2
lincom many-few
reg bestcardchosen many few Dollar_stakes highincome highfl if highcrt==1 & complete==1, robust
est sto C3
lincom many-few
reg bestcardchosen many few Dollar_stakes highincome highfl if highcrt==0 & complete==1, robust
est sto C4
lincom many-few
reg DollarFracAchievedT many few Dollar_stakes highincome highfl if highcrt==1 & complete==1, robust
est sto C5
lincom many-few
reg DollarFracAchievedT many few Dollar_stakes highincome highfl if highcrt==0 & complete==1, robust
est sto C6
lincom many-few
esttab C1 C2 C3 C4 C5 C6, r2 b(%10.3fc) se(%10.3fc) compress nonotes addnotes("Note: the dependent variable is an indicator for the best or the worst card chosen in the first" "four columns and the fraction of the maximum dollars achieved in the last two columns; a complete" "set of controls is added but not reported; robust standard errors reported. * p<0.10," "** p<0.05, *** p<0.01.") label replace star(* 0.10 ** 0.05 *** 0.01) /*
	*/ drop(Dollar_stakes highincome highfl) mtitles("High" "Low" "High" "Low" "High" "Low") title(A3: Heterogeneous Cognitive Effects) /*
	*/ order()	
	

*** TABLE A4 - Heterogeneous Effects by Financial Literacy ***	
reg worstcardchosen many few Dollar_stakes highincome highcrt if highfl==1 & complete==1, robust
est sto F1
lincom many-few
reg worstcardchosen many few Dollar_stakes highincome highcrt if highfl==0 & complete==1, robust
est sto F2
lincom many-few
reg bestcardchosen many few Dollar_stakes highincome highcrt if highfl==1 & complete==1, robust
est sto F3
lincom many-few
reg bestcardchosen many few Dollar_stakes highincome highcrt if highfl==0 & complete==1, robust
est sto F4
lincom many-few
reg DollarFracAchievedT many few Dollar_stakes highincome highcrt if highfl==1 & complete==1, robust
est sto F5
lincom many-few
reg DollarFracAchievedT many few Dollar_stakes highincome highcrt if highfl==0 & complete==1, robust
est sto F6
lincom many-few
esttab F1 F2 F3 F4 F5 F6, r2 b(%10.3fc) se(%10.3fc) compress nonotes addnotes("Note: the dependent variable is an indicator for the best or the worst card chosen in the first" "four columns and the fraction of the maximum dollars achieved in the last two columns; a complete" "set of controls is added but not reported; robust standard errors reported. * p<0.10," "** p<0.05, *** p<0.01.") label replace star(* 0.10 ** 0.05 *** 0.01) /*
	*/ drop(Dollar_stakes highincome highcrt) mtitles("High" "Low" "High" "Low" "High" "Low") title(A4: Heterogeneous Financial Literacy Effects) /*
	*/ order()	
	
	
*** TABLE A5 - Fraction of Maximum Dollars Achieved Assuming Additive Utility ***		
eststo U1: reg EUFracAchievedA many few if complete==1, robust
lincom many-few
eststo U2: reg EUFracAchievedA many few aDMPL_EUbestminusdom highincome highcrt highfl if complete==1, robust
lincom many-few
eststo U3: reg EUFracAchievedAT many few if complete==1, robust
lincom many-few
eststo U4: reg EUFracAchievedAT many few aDMPL_EUbestminusdom highincome highcrt highfl if complete==1, robust
lincom many-few
esttab U1 U2 U3 U4, r2 b(%10.3fc) se(%10.3fc) label compress nonotes addnotes("dependent variable is the fraction of the dollar gains available" "that are achieved; robust standard errors reported." "Here we assume simple additive utility for all participants." "* p<0.10, ** p<0.05, *** p<0.01.") replace star(* 0.10 ** 0.05 *** 0.01) /*
	*/ drop() mtitles("OLS" "OLS" "OLS" "OLS") title(A5: Fraction of Maximum Linear/Additive Dollars Achieved) /*
	*/ order()	
	
	
*** TABLE A6 - Fraction of Maximum Dollars Achieved Assuming Additive Utility and Surveyed Discount Rates ***		
eststo E1: reg DollarFracAchievedS many few if complete==1, robust
lincom many-few
eststo E2: reg DollarFracAchievedS many few Dollar_stakes highincome highcrt highfl if complete==1, robust
lincom many-few
esttab E1 E2, r2 b(%10.3fc) se(%10.3fc) label compress nonotes addnotes("dependent variable is the fraction of the dollar gains available" "that are achieved; robust standard errors reported." "Using surveyed credit card interest rates or the average credit card rate at the time." "* p<0.10, ** p<0.05, *** p<0.01.") replace star(* 0.10 ** 0.05 *** 0.01) /*
	*/ drop() mtitles("OLS" "OLS") title(Fraction of Maximum Dollar Gains Achieved) /*
	*/ order()
eststo E3: reg DollarFracAchievedST many few if complete==1, robust
lincom many-few
eststo E4: reg DollarFracAchievedST many few Dollar_stakes highincome highcrt highfl if complete==1, robust
lincom many-few
esttab E1 E2 E3 E4, r2 b(%10.3fc) se(%10.3fc) label compress nonotes addnotes("Dependent variable is the fraction of the dollar gains available" "that are achieved; robust standard errors reported." "Using surveyed credit card interest rates or the average credit card rate at the time." "* p<0.10, ** p<0.05, *** p<0.01.") replace star(* 0.10 ** 0.05 *** 0.01) /*
	*/ drop() mtitles("OLS" "OLS" "OLS" "OLS") title(A6: Fraction of Maximum Dollar Gains Achieved) /*
	*/ order()	


*** TABLE A7 - Fraction of Maximum Dollars Achieved Assuming Various Opportunity Costs of Time ***	
* $22.5 per hour is the cutoff beyond which it no longer works.
drop OCT DollarFracAchievedT
g OCT = time_past_median*0.00625
g DollarFracAchievedT = ((Dollar_gain-OCT)/Dollar_max)
eststo D5: reg DollarFracAchievedT many few Dollar_stakes highincome highcrt highfl if complete==1, robust
lincom many-few

* The hourly wage on campus $12/hour - but lots of people choose not to work at this rate.
drop OCT DollarFracAchievedT
g OCT = time_past_median*0.00333333333333
g DollarFracAchievedT = ((Dollar_gain-OCT)/Dollar_max)
eststo D6: reg DollarFracAchievedT many few Dollar_stakes highincome highcrt highfl if complete==1, robust
lincom many-few

* Many students earn up to $100k when they graduate. This is $50/hr.
drop OCT DollarFracAchievedT
g OCT = time_past_median*0.01389
g DollarFracAchievedT = ((Dollar_gain-OCT)/Dollar_max)
eststo D7: reg DollarFracAchievedT many few Dollar_stakes highincome highcrt highfl if complete==1, robust
lincom many-few

esttab D7 D4 D5 D6, r2 b(%10.3fc) se(%10.3fc) label compress nonotes addnotes("Dependent variable is the fraction of the dollar gains available" "that are achieved; robust standard errors reported." "* p<0.10, ** p<0.05, *** p<0.01.") replace star(* 0.10 ** 0.05 *** 0.01) /*
	*/ drop() mtitles("OLS" "OLS" "OLS" "OLS") title(A7: Fraction of Maximum Dollar Gains Achieved) /*
	*/ order()
	
	
	
	
	
	
	
	
	
	
	
